
CLASSLIST = {}
setmetatable(CLASSLIST, {__mode='kv'})   -- 弱引用



--[[
功能   ： 定义一个类
参数   ： inherit    继承类。 inherit = ‘’ 表示是类名
         className  类名
返回   ： 返回类名
]]
function Class(inherit,className)
    if type(inherit) == 'string' then
        className = inherit;
        inherit =nil;
    end
    local luaClass = {};
    luaClass.luaInherit = inherit;
    luaClass.new = function (...)
        local self ={};
        if luaClass.luaInherit then
            if luaClass.luaInherit.new then
                self = luaClass.luaInherit.new(...);
            end
        end
        setmetatable(self, {__index=luaClass});
        ---初始化相关变量
        CLASSLIST[self] = self;
        self.className = className;
        if self.weekTable == nil then
            self.weekTable = {};   -- 每个类都有一个弱应用tab类型
            setmetatable(self.weekTable, {__mode='kv'})
        end
        if self.ctor and self.isctor==nil then
           self:ctor(...);  -- 调用构造函数
           self.isctor = true;
        end

        return self;
    end
    if luaClass.luaInherit then
        setmetatable(luaClass, {__index=luaClass.luaInherit});
     end
	return luaClass
end
--[[
功能   ： 检查当前存在类
参数   ： 无
返回   ： 返回类名

]]
function CLASS_CHECK()
    local num =0;
    for key, value in pairs(CLASSLIST) do
        num = num +1;
        print('clss_check',value.className,value.id,value)
    end
    print('CLASS_CHECK->num ',num);
end

--[[
功能   ： 垃圾回收
参数   ： 无
返回   ： 返回类名

]]
function CLASS_GC()
   collectgarbage('collect');
end
--[[
功能   ： 深度拷贝TAB
参数   ： st --- TAB
返回   ： 返回类名

]]
function COPY_TAB(st)
    local tab = {}
    for k, v in pairs(st or {}) do
        if type(v) ~= "table" then
            tab[k] = v
        else
            tab[k] = copyTab(v)
        end
    end
    return tab
end